package frame;

import java.util.ArrayList;

public abstract class Frame {
	public temp.Label name;
	public AccessList formals;
	
	abstract public tree.BasicStm procEntryExit1(tree.BasicStm body);
	abstract public assem.InstrList procEntryExit2(assem.InstrList body);
	abstract public frame.Proc procEntryExit3(assem.InstrList body);
	abstract public Access allocLocal(boolean escape);
	abstract public tree.BasicExp externalCall(String func, tree.ExpList args);
	abstract public temp.Temp FP();
	abstract public temp.Temp SP();
	abstract public temp.Temp RV();
	abstract public temp.TempList getCallerSaveRegs();
	abstract public temp.TempList getCalleeSaveRegs(); 
	abstract public ArrayList<temp.Temp> getArgRegs();
	abstract public int wordSize();
}
